package com.sinosoft.perfect.system._unit.dao;

import java.sql.SQLException;
import java.util.List;

import com.sinosoft.perfect.system._.po.TUnit;
import com.sinosoft.perfect.system._.po.TUnitInformation;
import com.sinosoft.perfect.system._.po.TUserRegisterNum;
import com.sinosoft.perfect.system._unit.formBean.UnitForm;

public interface IUnitDAO {

	/**
	 * 增加组织结构
	 */
	public Object insertTUnit(TUnit tunit) throws SQLException;

	/**
	 * 增加组织结构详细
	 */
	public Object insertTUnitInformation(TUnitInformation tunitinformation) throws SQLException;

	/**
	 * 增加单位的用户注册码
	 */
	public Object insertTUserRegisterNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 查询组织机构
	 */
	public List<UnitForm> selectTUnit(TUnit tunit) throws SQLException;

	/**
	 * 查询组织机构及其子机构
	 */
	public List<TUnit> selectTUnitAndChildren(String unitId) throws SQLException;

	/**
	 * 查询排序编码
	 */
	public Object selectTUnitSortNum(TUnit tunit) throws SQLException;

	/**
	 * 查询最大排序编码
	 */
	public Object selectTUnitMAXSortNum(TUnit tunit) throws SQLException;

	/**
	 * 查询是否有同名机构
	 */
	public Object selectTUnitByName(TUnit unit) throws SQLException;

	/**
	 * 查询组织机构详细
	 */
	public List<TUnitInformation> selectTUnitInfo(TUnitInformation tunitinformation) throws SQLException;

	/**
	 * 查询机构的用户注册码
	 */
	public List<TUserRegisterNum> selectTUserRegisterNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 查询是否有同名注册码
	 */
	public List<TUserRegisterNum> selectTUserRegisterNumByNum(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 更新组织机构信息
	 */
	public int updateTUnitByPK(TUnit tunit) throws SQLException;

	/**
	 * 更新组织机构状态，包括子机构
	 */
	public int updateTUnitStatusByPK(TUnit tunit) throws SQLException;

	/**
	 * 更新组织机构详细信息
	 */
	public int updateTUnitInfoByPK(TUnitInformation tunitinfo) throws SQLException;

	/**
	 * 更新组织机构的用户注册码信息
	 */
	public int updateTUserRegisterNumByPK(TUserRegisterNum tuserregisternum) throws SQLException;

	/**
	 * 更新用户注册码的已经注册次数，次数=次数-1
	 */
	public int updateTUserRegisterNumTimesByUnitId(String unitId) throws SQLException;

	/**
	 * 删除组织机构及其子机构
	 */
	public int deleteTUnits(String unitId) throws SQLException;

	/**
	 * 删除组织机构用户关系
	 */
	public int deleteTUserUnitRelation(String unitId) throws SQLException;

	/**
	 * 删除组织机构详细
	 */
	public int deleteTUnitInformation(String unitId) throws SQLException;

	/**
	 * 删除组织机构的用户注册码信息
	 */
	public int deleteTUserRegisterNumByUnitId(String unitId) throws SQLException;

	public List<TUnit> selectTUnitByUnitIds(String unitIds) throws SQLException;
}
